

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * 点对点mq
 */
public class Consumer {


    /**
     * 消费者
     *
     * @param args
     * @throws JMSException
     */
    public static void main(String[] args) throws JMSException {

        //连接mq消息中间件的账号密码，在mq消息中间件中activeMq/conf/jetty-realm.properties文件中配 置
        String userName = "admin";
        String password = "admin";
        //发送消息给中间件的端口号，在启动activemq时会启动2 个端口8161和61616，其中8161是后台管理系统，61616是给java用的tcp端口
        String brokerUrl = "tcp://127.0.0.1:61616";
        /**
         *  ConnectionFactory ：连接工厂，JMS 用它创建连接
         *
         */
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName,
                password, brokerUrl);
        // 启动 JMS 客户端到JMS Provider 的连接
        Connection connection = connectionFactory.createConnection();
        connection.start();
        Session session = connection.createSession(true, Session.CLIENT_ACKNOWLEDGE);
        // Destination ：消息的目的地;消息发送给谁.
        // 获取session注意参数值xingbo.xu-queue是一个服务器的queue，须在在ActiveMq的console配置
        Queue queue = session.createQueue("xd-queue");

        // 消费者，消息接收者
        MessageConsumer consumer = session.createConsumer(queue);
        while (true) {
            TextMessage message = (TextMessage) consumer.receive();
            if (null != message) {
                System.out.println("收到消息：" + message.getText());
                session.commit();
            } else
                break;
        }
        session.close();
        connection.close();
    }

}
